// samsting : this file is auto create.

#ifndef ALIYUN_Ecs_DescribeInstanceAttributeResponse_H_
#define ALIYUN_Ecs_DescribeInstanceAttributeResponse_H_

#include "core/acs_response.h"

namespace aliyun { namespace Ecs {

class DescribeInstanceAttributeResponse : public AcsResponse {
public:
  DescribeInstanceAttributeResponse();

  class LockReason {
    friend class DescribeInstanceAttributeResponse;
  public:
    const string& GetLockReason(void) const;
  private:
    string LockReason_;
  }; // LockReason 


  class VpcAttributes {
    friend class DescribeInstanceAttributeResponse;
  public:
    const std::vector<IpAddress>& GetPrivateIpAddress(void) const;
    const string& GetVpcId(void) const;
    const string& GetVSwitchId(void) const;
    const string& GetNatIpAddress(void) const;
  private:
    std::vector<IpAddress> PrivateIpAddress_;
    string VpcId_;
    string VSwitchId_;
    string NatIpAddress_;
  }; // VpcAttributes 


  class EipAddress {
    friend class DescribeInstanceAttributeResponse;
  public:
    const string& GetAllocationId(void) const;
    const string& GetIpAddress(void) const;
    int  GetBandwidth(void) const;
    const string& GetInternetChargeType(void) const;
  private:
    string AllocationId_;
    string IpAddress_;
    int    Bandwidth_;
    string InternetChargeType_;
  }; // EipAddress 

  const std::vector<LockReason>& GetOperationLocks(void) const;
  const VpcAttributes& GetVpcAttributes(void) const;
  const EipAddress& GetEipAddress(void) const;
  const std::vector<SecurityGroupId>& GetSecurityGroupIds(void) const;
  const std::vector<IpAddress>& GetPublicIpAddress(void) const;
  const std::vector<IpAddress>& GetInnerIpAddress(void) const;
  const string& GetInstanceId(void) const;
  const string& GetInstanceName(void) const;
  const string& GetImageId(void) const;
  const string& GetRegionId(void) const;
  const string& GetZoneId(void) const;
  const string& GetClusterId(void) const;
  const string& GetInstanceType(void) const;
  const string& GetHostName(void) const;
  const string& GetStatus(void) const;
  const string& GetInternetChargeType(void) const;
  int  GetInternetMaxBandwidthIn(void) const;
  int  GetInternetMaxBandwidthOut(void) const;
  const string& GetVlanId(void) const;
  const string& GetSerialNumber(void) const;
  const string& GetCreationTime(void) const;
  const string& GetDescription(void) const;
  const string& GetInstanceNetworkType(void) const;
  const string& GetIoOptimized(void) const;
  const string& GetInstanceChargeType(void) const;
  const string& GetExpiredTime(void) const;

private:
  std::vector<LockReason> OperationLocks_;
  VpcAttributes VpcAttributes_;
  EipAddress EipAddress_;
  std::vector<SecurityGroupId> SecurityGroupIds_;
  std::vector<IpAddress> PublicIpAddress_;
  std::vector<IpAddress> InnerIpAddress_;
  string InstanceId_;
  string InstanceName_;
  string ImageId_;
  string RegionId_;
  string ZoneId_;
  string ClusterId_;
  string InstanceType_;
  string HostName_;
  string Status_;
  string InternetChargeType_;
  int    InternetMaxBandwidthIn_;
  int    InternetMaxBandwidthOut_;
  string VlanId_;
  string SerialNumber_;
  string CreationTime_;
  string Description_;
  string InstanceNetworkType_;
  string IoOptimized_;
  string InstanceChargeType_;
  string ExpiredTime_;

protected:
  const char* BaseKey(void);
  void         UnmarshallerMap(std::map<string, string>& response_map);

};

} } // namespace aliyun { namespace Ecs {

#endif // #ifndef ALIYUN_Ecs_DescribeInstanceAttributeResponse_H_

// end of file 
